package com.ruoyi.system.service;

import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.system.domain.CrmStudent;
import com.ruoyi.system.domain.CrmStudentVo;

import java.util.List;

/**
 * 学员信息Service接口
 * 
 * @author Bill
 * @date 2024-06-22
 */
public interface ICrmStudentService 
{
    /**
     * 查询学员信息
     * 
     * @param id 学员信息主键
     * @return 学员信息
     */
    public CrmStudent selectCrmStudentById(Long id);

    /**
     * 查询学员信息
     *
     * @param id 学员信息主键
     * @return 学员信息
     */
    public CrmStudentVo selectCrmStudentVoById(Long id);

    /**
     * 查询学员信息列表
     * 
     * @param crmStudent 学员信息
     * @return 学员信息集合
     */
    public List<CrmStudent> selectCrmStudentList(CrmStudent crmStudent);

    /**
     * 查询学员信息列表
     *
     * @param crmStudent 学员信息
     * @return 学员信息集合
     */
    public void selectCrmStudentVoList(TableDataInfo rspData);

    /**
     * 新增学员信息
     * 
     * @param crmStudent 学员信息
     * @return 结果
     */
    public int insertCrmStudent(CrmStudent crmStudent);

    /**
     * 修改学员信息
     * 
     * @param crmStudent 学员信息
     * @return 结果
     */
    public int updateCrmStudent(CrmStudent crmStudent);

    /**
     * 批量删除学员信息
     * 
     * @param ids 需要删除的学员信息主键集合
     * @return 结果
     */
    public int deleteCrmStudentByIds(String ids);

    /**
     * 删除学员信息信息
     * 
     * @param id 学员信息主键
     * @return 结果
     */
    public int deleteCrmStudentById(Long id);

    /**
     * 查询用户信息列表不分页
     * @param user
     * @return
     */

    public List<SysUser> selectUserList(SysUser user);


    /**
     * 查询销售人员列表
     * @param user
     * @param salesmanId 需要包含的招生顾问人员ID
     * @return
     */
    public List<SysUser> selectSalesmanList(SysUser user, Long... salesmanId);

    /**
     * 查询推广人员列表
     * @param user
     * @param promotionId 必须包含的新媒体运营员ID
     * @return
     */

    public List<SysUser> selectPromotionList(SysUser user, Long... promotionId);


    /**
     * 学员跟踪状态修改
     *
     * @param user 用户信息
     * @return 结果
     */
    public int changeFollowStatus(CrmStudent student);

    /**
     * 学员收藏状态修改
     *
     * @param user 用户信息
     * @return 结果
     */
    public int changeCollectStatus(CrmStudent student);
}
